Developer API
We recognize that Dabbleboard will be even more useful to users when integrated with other services, so we're offering this developer API. Now you can easily include Dabbleboard in your own service.
Step 1: Get a developer account
Step 2: Make API calls from your server
Step 3: Embed HTML

Figure 1: Communication between your server, Dabbleboard's server and user's browser
Step 1: Get a developer account
Visit the Account page to generate a developer key. Review the Terms of Service.
Step 2: Make API calls from your server
Your server should make API calls to Dabbleboard's API servers to create users and drawings:
- A user on Dabbleboard is associated with a unique user_id, and has a user_key to limit access to the account. Each user has his/her dedicated personal library of drawings. The user you create on Dabbleboard should have a 1:1 correspondence with a user you have on your own service.
- A drawing on Dabbleboard is associated with a unique user_id-drawing_id pair, and has a drawing_key to limit access to it. Drawings may be created with API calls *OR* by users themselves when they manually add drawings to their personal library pane.

Figure 2: Namespaces for dev_id > user_id > drawing_id
http://api.dabbleboard.com/api/list_drawings?dev_id=billgates&dev_key=abcdefgh
The API Admin Control Panel allows one to manually perform the API calls. Developers may find it handy when testing their code. Non-developers can use it to take advantage of the API, without having to learn how to program.
API functions
| Parameter | Description |
| dev_id | Developer ID, same as your login at Dabbleboard. |
| dev_key | Developer key, which you generated in Step 1. |
| signature | Optional, use instead of dev_key; provides added security by never sending dev_key in plain text. Change the option to require signatures on your Account page. To compute the signature:
(i) Sort parameters in dictionary order. E.g. for create_user: {user_id="john", user_key="black", dev_id="billgates"} => {dev_id="billgates", user_id="john", user_key="black"} (ii) Concatenate parameter values. "billgatesjohnblack" (iii) Append the dev_key at the end. "billgatesjohnblack"+dev_key => "billgatesjohnblackabcdefgh" (iv) Compute the hex MD5 hash. MD5("billgatesjohnblackabcdefgh") => "9f24a0c6f5eb6cdf54e3ebdad8a989d1" |
<result>
<status>pass</status>
</result>
| Parameter | Description |
| user_id | Unique ID (alphanumeric) for user being created |
| user_key | Key (up to 64 characters) to control access to user's library. We recommend using at least an MD5 hash to create keys. |
No additional parameters
Sample response:
<result>
<user><user_id>john</user_id><user_key>abcdefgh123</user_key></user>
<user><user_id>tim</user_id><user_key>abc</user_key></user>
<status>pass</status>
</result>
| Parameter | Description |
| user_id | User ID for user being updated |
| user_key | New key value. |
| Parameter | Description |
| user_id | User ID for user being deleted; drawings created by user are also deleted |
| Parameter | Description |
| user_id | User ID that drawing is created under |
| drawing_id | Unique ID (unsigned integer) for drawing being created |
| drawing_key | Key (up to 64 characters) to control access to drawing. We recommend using at least an MD5 hash to create keys. |
| copy_user_id | Optional, use if creating copy. Source drawing's user ID |
| copy_drawing_id | Optional, use if creating copy. Source drawing's drawing ID |
No additional parameters
Sample response:
<result>
<drawing><user_id>john</user_id><drawing_id>0</drawing_id><drawing_key>0000</drawing_key></drawing>
<drawing><user_id>john</user_id><drawing_id>1</drawing_id><drawing_key>1111</drawing_key></drawing>
<drawing><user_id>tim</user_id><drawing_id>0</drawing_id><drawing_key>00000000</drawing_key></drawing>
<drawing><user_id>tim</user_id><drawing_id>1</drawing_id><drawing_key>11112222</drawing_key></drawing>
<status>pass</status>
</result>
| Parameter | Description |
| user_id | User ID that drawing is created under |
| drawing_id | Drawing ID for drawing being updated |
| drawing_key | New key value. |
| Parameter | Description |
| user_id | User ID that drawing is created under |
| drawing_id | Drawing ID for drawing being deleted |
Step 3: Embed HTML
Instantiate Dabbleboard in your webpages using html like this (replace values of dev_id and other parameters with your own ones):
<iframe width="640" height="480" style="border:none" src=
"http://api.dabbleboard.com/api/iframe?dev_id=billgates&user_id=john&user_key=black&drawing_user_id=tim&drawing_id=1&drawing_key=1111222&width=640&height=480"
></iframe>
| Parameter | Description |
| width | Width of the embedded swf. The swf will automatically lay out the toolbar buttons for any width. Minimum value = 600 |
| height | Height of the embedded swf. Minimum value = 400 |
| dev_id | Developer ID, same as your login at Dabbleboard |
| user_id | Unique ID (alphanumeric) for user; determines which user's library is loaded. |
| user_key | Key (up to 64 characters) to control access to user's library. |
| drawing_user_id | User ID that drawing is created under. E.g. if John and Tim want to collaborate over one of Tim's drawings, Tim's HTML code will have user_id=drawing_user_id="tim" but John's will have {user_id="john", drawing_user_id="tim"} |
| drawing_id | Unique ID (unsigned integer) for drawing |
| drawing_key | Key (up to 64 characters) to control access to drawing. |
| hide_lib_pane | Specify "yes" to hide personal library pane, drawing name, etc. Optional, default = "no". Hide library pane for a result similar to the old API, or if you're creating a whiteboard on a public webpage with no user authentication. |
Please contact us at partner@dabbleboard.com for any questions regarding the developer API. We're happy to also discuss your needs for customization or for running Dabbleboard on your own servers.
